/*
我们发现，在以往编写项目时，尤其是在类内部进行类内部的成员字段封装时，需要编写大量的set/get方法，这不仅使我们的类定义中充满了set/get方法，
同时如果字段名发生改变，又要挨个就行修改，尤其当字段变的很多时，构造方法的编写会非常麻烦
所以，我们可以通过lombok小辣椒解决这样的问题
下载lombok jar包，放到项目目录下，手动添加依赖，然后在插件里安装小辣椒的插件。idea默认安装了的。重启一次，不重启可能会出现代码运行不正常的情况
 */
package LomBok;
//先看使用原生方式编写封装类的写法。手动写好成员变量后，要右键点击两次Generate，分别生成构造方法和Setter、Getter方法
/*
public class Student {
    private Integer sid;
    private String name;
    private String gender;

    public Student(Integer sid, String name, String gender) {
        this.sid = sid;
        this.name = name;
        this.gender = gender;
    }

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

}
*/

import lombok.AllArgsConstructor;  //生成包含所有参数的构造方法
import lombok.Getter;  //生成get方法
import lombok.Setter;  //生成set方法

//如果使用小辣椒，只需要在类定义前面添加几个注解就可以了
@Getter
@Setter
@AllArgsConstructor
public class Student {
    private Integer sid;
    private String name;
    private String gender;
}
//然后在Main类里创建个Student对象，看下Student.class反编译后的代码是什么样子的，
// 可以发现基本和我们手写的构造方法及setter，getter一样。而这是小辣椒lombok帮我们写的。
/*
Lombok是一种插件话注解API，是通过添加注解实现，然后在javac进行编译的时候进行处理。
Java的编译过程可以分成三个阶段：
1、所有源文件会被解析成语法树。
2、调用注解处理器。如果注解处理器产生了新的源文件，新文件也要进行编译。
3、最后，语法树会被分析并转化成类文件。
实际上在上述的第二阶段，会执行*lombok.core.AnnotationProcessor*，它所做的工作就是我们上面所说的，修改语法树。
 */